﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ProyectoGrupo5.Persistencia;
using ProyectoGrupo5.ClasesDominio;

namespace ProyectoGrupo5.Negocio
{
    public class AvisoService
    {
        // Dependencias
        public IAvisoDAO AvisoDAO { get; set; }

        // Servicios básicos
        public Aviso CrearAviso(Aviso aviso)
        {
            if ((aviso.CodigoAviso == 0) ||
            String.Empty.Equals(aviso.CodigoAviso))
                throw new Exception("Código de aviso no es válido");

            if (aviso.FechaInicio == null ||
               String.Empty.Equals(aviso.FechaInicio) ||
               aviso.FechaInicio < DateTime.Now)
                throw new Exception("Fecha de inicio no es válida ó es menor a fecha actual");

            if (aviso.FechaFin == null ||
              String.Empty.Equals(aviso.FechaFin) ||
              aviso.FechaFin < DateTime.Now)
                throw new Exception("Fecha de fin no es válida ó es menor a fecha actual");

            if (aviso.FechaInicio > aviso.FechaFin)
                throw new Exception("Fecha de inicio no puede ser mayor que fecha fin");

            if (aviso.FechaFin < aviso.FechaInicio)
                throw new Exception("Fecha de fin no puede ser menor que fecha inicio");

            if (aviso.Ofertante.CodigoOfertante == 0 ||
               String.Empty.Equals(aviso.Ofertante.CodigoOfertante))
                throw new Exception("Codigo de ofertante no es válido");

            if (aviso.Ofertante.Correo == null ||
               String.Empty.Equals(aviso.Ofertante.Correo))
                throw new Exception("Cuenta de correo no es válido");

            return AvisoDAO.CrearAviso(aviso);
        }

        public Aviso ObtenerAviso(Int32 codigo)
        {
            return AvisoDAO.ObtenerAviso(codigo);
        }

        public Aviso ModificarAviso(Aviso Aviso)
        {
            return AvisoDAO.ModificarAviso(Aviso);

        }
        public void EliminarAviso(Int32 codigo)
        {
            AvisoDAO.EliminarAviso(codigo);
        }

        // Servicios avanzados
        public ICollection<Aviso> ListarTodosLosAvisos()
        {
            return AvisoDAO.ListarAvisosTodos();
        }
    }
}